\documentclass[a4paper,twoside]{ctexart}
\usepackage{geometry}
\geometry{margin=1cm,vmargin={0pt,1cm}}
\setlength{\topmargin}{-2cm}
\setlength{\paperheight}{23cm}
\setlength{\paperwidth}{18cm}
\setlength{\textheight}{19.6cm}
\setlength{\textwidth}{15cm}
\usepackage{makecell}
\usepackage{fancyhdr}
\usepackage{siunitx}
\usepackage{amssymb}
\usepackage{indentfirst}
\setlength{\parindent}{0.5em}

\pagenumbering{arabic}

% useful packages.
\usepackage{multirow}
\usepackage{caption}
\usepackage{mathrsfs}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{enumerate}
\usepackage{xcolor,graphicx,float,subfigure}
\usepackage{epstopdf}
\usepackage{multicol}
\usepackage{fancyhdr}
\usepackage{layout}
\usepackage{listings}
\usepackage{diagbox}
\lstset{language=Matlab}
\lstset{breaklines}
\lstset{extendedchars=false}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage{xcolor}
\usepackage{cite}
\usepackage[numbers,sort&compress]{natbib}
\setcitestyle{open={},close={}}
%\usepackage{natbibspacing}
%\renewcommand{\refname}{}
\usepackage{anyfontsize}

% English theorem environment
\theoremstyle{definition}
\newtheorem{proposition}[section]{Proposition}
\newtheorem{corollary}[section]{Corollary}
\newtheorem{definition}{Definition}[section]
\newtheorem{remark}[section]{Remark}
\newtheorem{example}[definition]{Example}
\newtheorem{exercise}[definition]{Exercise}
\newtheorem{theorem}[definition]{Theorem}
\newtheorem{lemma}[definition]{Lemma}
\newenvironment{solution}{\begin{proof}[Solution]}{\end{proof}}
\renewcommand{\proofname}{\noindent Proof}
% some common command
\newcommand{\dif}{\mathrm{d}}
\newcommand{\avg}[1]{\left\langle #1 \right\rangle}
\newcommand{\pdfrac}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\op}{\odot}
\newcommand{\Eabs}{E_{\mathrm{abs}}}
\newcommand{\Erel}{E_{\mathrm{rel}}}
\newcommand{\Ediv}{\mathrm{div}}%\div是除号
\newcommand{\lrq}[1]{\left( #1 \right)}
\newcommand{\avint}[1]{\frac{1}{\left|#1\right|}\int_{#1}}

\newcommand{\upcite}[1]{\textsuperscript{\textsuperscript{\cite{#1}}}} 

\makeatletter
\newcommand\sixteen{\@setfontsize\sixteen{17pt}{6}}
\renewcommand{\maketitle}{\bgroup\setlength{\parindent}{0pt}
\begin{flushleft}
\sixteen\bfseries \@title
\medskip
\end{flushleft}
\texttt{\@author}
\egroup}
\renewcommand{\maketag@@@}[1]{\hbox{\m@th\normalsize\normalfont#1}}
\makeatother
\setlength{\abovecaptionskip}{0.cm}
\setlength{\floatsep}{0.cm}
\setlength{\intextsep}{0.cm}

%\CTEXsetup[format={\Large\bfseries}]{section}

\title{微分方程数值解\ 第3次作业}
\author{李之琪 22235056}

\begin{document}
\maketitle

\section{收敛结果测试}
针对方程$u_t = u_x - au$，采用stable leapfrog方法，取$h =
\dfrac{2\pi}{n}, k = h/2, a = 1$，终止时刻$T = 2\pi$，初值函数$f(x) =
\sin(x) +\sin(10x)$。则计
算结果的误差如表\ref{table:stable_leapfrog}所示，这里的误差范数采用2范数。\\
\begin{table}[!htp]
  \centering
  \begin{tabular}{c|ccccccc}
    \hline
    $n$&200&ratio&400&ratio&800&ratio&1600\\
    \hline
    err &2.86e$-$3&2.13&6.54e$-$4&2.03&1.60e$-$4&2.01&3.98e$-$5\\
    \hline
  \end{tabular}
  \caption{stable leapfrog收敛性测试，$h = 2\pi/n, k = h/2, a = 1$，终止时刻$T = 2\pi$。}
  \label{table:stable_leapfrog}
\end{table}\\
在$k = O(h)$的条件下，stable leapfrog方法可以达到二阶收敛。
上述结果可以通过运行\texttt{stable\_leapfrog\_err.m}文件得到。
\section{CFL条件验证}
下面我们通过数值实验验证CFL条件的必要性。其它参数保持不变，我们改变
$\lambda = \dfrac{k}{h}$的值，观察计算结果。误差范数仍采用2范数。\\
\begin{table}[!htp]
  \centering
  \begin{tabular}{c|ccccc}
    \hline
    $n$&1.2&1.0&0.8&0.6&0.4\\
    \hline
    err &5.83e$+$27&1.23e$-$4&1.43e$-$3&3.48e$-$3&3.10e$-$3\\
    \hline
  \end{tabular}
  \caption{stable leapfrog CFL条件验证，$h = 2\pi/200, k = \lambda h, a = 1$，终止时刻$T = 2\pi$。}
  \label{table:stable_leapfrog_CFL}
\end{table}\\
以上数值实验验证了CFL条件的必要性。上述结果可以通过运行
\texttt{stable\_leapfrog\_CFL.m}文件得到。
\section{高频项影响测试}
下面我们仍通过数值实验测试高频项对精度的影响。其它参数保持不变，取初
值函数$f(x) = \sin(x) +\sin(100x)$的值，观察计算结果。误差范数仍采用2范数。\\
\begin{table}[!htp]
  \centering
  \begin{tabular}{c|ccccc}
    \hline
    $n$&50&100&200&400&800\\
    \hline
    err &2.73e$-$5&6.84$-$6&1.71e$-$6&8.64e$-$3&5.53e$-$4\\
    \hline
    $n$&1600&3200&6400&12800&25600\\
    \hline
    err &1.13e$-$3&6.70e$-$3&2.54e$-$3&6.29e$-$4&1.57e$-$4\\
    \hline
  \end{tabular}
  \caption{stable leapfrog 高频项测试，$h = 2\pi/n, k = h/2, a = 1$，终止时刻$T = 2\pi$。}
  \label{table:stable_leapfrog_HF1}
\end{table}\\

我们给出对以上数值结果的分析。当$n \le 200$时，$h \ge \pi/100$，此时
$h$大于函数$\sin(100x)$的周期，离散初值中完全不存在$\sin(100x)$的信息，
实际求解的问题是以$\sin(x)$作为初值的问题。故可以正常达到二阶收敛。当
$n$超过400后，$\sin(100x)$的信息开始反映在计算过程中。当离散点$n$不充
足($n \le N$，$N \in (3200,6400)$)时，算法不能充分捕捉$\sin(100x)$的
信息，这造成了精度丢失现象；而当$n$充分多时，算法又重新达到二阶收敛。
上述结果可以通过运行
\texttt{stable\_leapfrog\_HF.m}文件得到。
\end{document}

